package Y2024.M12.D19;

import java.net.ServerSocket;
import java.net.Socket;


/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 25228
 * Date: 2024-12-19
 * Time: 8:20
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class server {
    public static void main(String[] args) {
        ServerSocket server = null;
        Socket socket = null;
        BufferedReader reader = null;
        try {
            // 创建一个 ServerSocket 对象，监听 8080 端口
            server = new ServerSocket(8080);
            // 输出等待连接的信息
            System.out.println("等待连接");
            // 阻塞等待客户端的连接请求，当有客户端连接时，返回一个 Socket 对象
            socket = server.accept();
            // 输出已连接的信息
            System.out.println("已连接");
            // 创建一个 BufferedReader 对象，将输入流包装成一个可以读取文本的流，以便接收客户端发送的数据
            reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String msg;
            // 循环读取客户端发送的消息，直到收到 "bye" 结束或连接中断
            while ((msg = reader.readLine())!= null) {
                if ("bye".equals(msg)) {
                    break;
                }
                // 输出接收到的消息
                System.out.println(msg);
            }
        } catch (IOException e) {
            if (e instanceof java.net.SocketException) {
                System.out.println("客户端可能已经关闭连接: " + e.getMessage());
            } else {
                // 打印其他异常信息
                e.printStackTrace();
            }
        } finally {
            try {
                if (reader!= null) {
                    // 关闭读取器
                    reader.close();
                }
                if (socket!= null) {
                    // 关闭 Socket 对象
                    socket.close();
                }
                if (server!= null) {
                    // 关闭 ServerSocket 对象
                    server.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
